引用https://book.tidb.io/ TiFlash架構圖
登愣,看到這張圖是不是就已經想關掉網頁了,沒錯!他看起來就是這樣的讓人感到厭世...
究竟TiFlash要怎麼讓自己長出資料來?首先安排了一個心腹Replica Manager負責監聽TiDB的內線消息,只要聽到有關於TiFlash的DDL操作,就通知PD轉告TiKV分裂出region。
這個時候的region是learner角色,然後會被放置到TiFlash所在的store。Replica Manager也會將TiFlash資料同步進度回報給TiDB。
而TiKV收到通知後,便將異動的資訊透過raft command丟給Raft Learner Proxy,最後將資料結構從row轉換成column寫到disk。
而當client發起了一個select request到tidb,首先tidb將要讀取的region以及schema版本轉發給Coprocessor,然後Coprocessor會先向Schema Syncer確認schema版本是否有落差需要更新。
這裡的Schema Syncer會持續不斷的同步schema異動信息。接著比對raft leader的index和learner的apply index,確認資料是否跟上。依據從PD的TSO取得的時間決定snapshot read的版本,最後完成語法的計算再回傳給TiDB。